package com.share.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    @TableId(type = IdType.AUTO)        // 使用数据库自增的值
    private Long id;
    private Integer status;         // 0在职 -1离职 1管理员

    @Size(min = 3, max = 5, message = "用户名为3-5位")        // 用户名限制 4 - 10 位
    private String username;        // 用户名
    @Pattern(regexp = "^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$", message = "手机号不符合格式")
    private String phone;        // 用户手机号
    @TableField(exist = false)      // 生成 SQL时会忽略这个字段
    private String phoneCode;       // 手机号验证码
    @TableField(exist = false)      // 生成 SQL时会忽略这个字段
    private String authCode;       // 真人验证码
    @Pattern(regexp = "^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{10,13}$", message = "密码必须包含大小写字母和数字的组合，不能使用特殊字符，长度在10-13之间")
    private String password;        // 注意在返回用户信息时不要返回密码字段
    @TableField(exist = false)
    @Pattern(regexp = "^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{10,13}$", message = "密码必须包含大小写字母和数字的组合，不能使用特殊字符，长度在10-13之间")
    private String rePassword;

    private String avatar;     // 用户头像地址

    private Integer totalCapacity;         // 磁盘总容量(G)
    private Integer usedCapacity;         // 已用磁盘总容量(G)
    private Integer remainingCapacity;         // 剩余磁盘总容量(G)

    private Date createTime;
    private Date updateTime;
    private Date lastLoginTime;         // 用户勾选自动登录默认30天内不在需要登录操作

}
